package com.dferraz.teste;

import static org.junit.Assert.assertEquals;

import java.util.Date;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.dferraz.cliente.Cliente;
import com.dferraz.cliente.ClienteRN;

public class ClienteTest extends TestHeranca{
	
	@Before
	public void setup(){
		Cliente c1 = new Cliente("Guilherme1", "03152531184", "cliente1@hotmail.com", "Rua 01", new Date());
		Cliente c2 = new Cliente("Guilherme2", "03152531184", "cliente2@hotmail.com", "Rua 02", new Date());
		Cliente c3 = new Cliente("Guilherme3", "03152531184", "cliente3@hotmail.com", "Rua 03", new Date());
		
		ClienteRN clienteRN = new ClienteRN();
			
		clienteRN.salvar(c1);
		clienteRN.salvar(c2);
		clienteRN.salvar(c3);
	}
	
	@After
	public void limpaBanco(){
		ClienteRN clienteRN = new ClienteRN();
		List<Cliente> lista = clienteRN.listar();
		
		for (Cliente cliente : lista) {
			clienteRN.excluir(cliente);
		}
	}
	
	@Test
	public void salvarTest(){
		
		Cliente cliente = new Cliente();
		
		cliente.setNome("Guilherme");
		cliente.setEndereco("Rua teste");
		cliente.setData_Cadastro(new Date());
		cliente.setCpf("123456789111");
		cliente.setEmail("guilherme-ferraz-@hotmail.com");
		
		ClienteRN clienteRN = new ClienteRN();
		
		clienteRN.salvar(cliente);
		
		assertEquals(true, true);
	}
	
	@Test
	public void listarTeste(){
		ClienteRN clienteRN = new ClienteRN();
		List<Cliente> lista = clienteRN.listar();
		assertEquals(3, lista.size());
	}
	
	@Test
	public void excluirTest(){
		ClienteRN clienteRN = new ClienteRN();
		
		List<Cliente> lista = clienteRN.listar();
		
		Cliente clienteExcluir = lista.get(0);
		clienteRN.excluir(clienteExcluir);
		
		lista = clienteRN.listar();
		
		assertEquals(2, lista.size());
	}
	
	@Test
	public void pesquisaTest(){
		ClienteRN clienteRN = new ClienteRN();
		Cliente clientePesquisado = clienteRN.pesquisar("e1");
		
		assertEquals("cliente1@hotmail.com", clientePesquisado.getEmail());
	}
	
	@Test
	public void alterarTest(){
		ClienteRN clienteRN = new ClienteRN();
		Cliente clientePesquisado = clienteRN.pesquisar("e1");
		
		assertEquals("cliente1@hotmail.com", clientePesquisado.getEmail());
		
		clientePesquisado.setEndereco("Deu certo a alteracao");
		
		clienteRN.alterar(clientePesquisado);
		
		Cliente clientealterado = clienteRN.pesquisar("e1");
		
		assertEquals("Deu certo a alteracao", clientealterado.getEndereco());
	}

}
